<!DOCTYPE html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>create_calib_data [HALCON算子参考手册]</title>
<style type="text/css">
      body {
    color: #000000;
    background-color: #ffffff;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
}

.body_main {
    margin-left: 35px;
    margin-right: 35px;
}

@media screen and (min-width:992px) {

    .body_main {
        margin-left: 10%;
        margin-right: 10%;
    }

    table.toctable {
        width: 80%
    }
}

@media screen and (min-width:1400px) {

    .body_main {
        margin-left: 15%;
        margin-right: 15%;
    }

    table.toctable {
        width: 70%
    }
}

body>div ul ul {
    margin-left: inherit;
}

a:link {
    color: #0044cc;
}

a:link,
a:visited {
    text-decoration: none;
}

a:link:hover,
a:visited:hover {
    text-decoration: underline;
}

th {
    text-align: left;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    text-rendering: optimizeLegibility;
    color: #666666;
}

code {
    font-family: monospace,monospace;
}

h1 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

h2 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

hr {
    border: 0;
    border-top: solid 1px #f28d26;
}

.pre {
    display: block;
    padding-bottom: 1ex;
    font-family: monospace;
    white-space: pre;
}

pre {
    font-family: monospace, monospace;
    padding: 1ex;
    white-space: pre-wrap;
}

.toc {
    font-size: 80%;
    border-top: 1px dashed #f28d26;
    border-bottom: 1px dashed #f28d26;
    padding-top: 5px;
    padding-bottom: 5px;
}

.inv {
    margin: 0;
    border: 0;
    padding: 0;
}

.banner {
    color: #666666;
    padding-left: 1em;
}

.logo {
    background-color: white;
}

.keyboard {
    font-size: 80%;
    padding-left: 3px;
    padding-right: 3px;
    border-radius: 5px;
    border-width: 1px;
    border-style: solid;
    border-color: #f28d26;
    background-color: #f3f3f3;
}

.warning {
    margin-top: 2ex;
    margin-bottom: 1ex;
    padding: 10px;
    text-align: center;
    border: 1px solid;
    color: #bb0000;
    background-color: #fff7f7
}

.imprint {
    margin-top: 1ex;
    font-size: 80%;
    color: #666666;
}

.imprinthead {
    font-weight: bolder;
    color: #666666;
}

.indexlink {
    text-align: right;
    padding-bottom: 5px;
}

.postscript {
    margin-top: 2ex;
    font-size: 80%;
    color: #666666
}

.evenrow {
    background-color: #e7e7ef;
    vertical-align: top;
}

.oddrow {
    background-color: #f7f7ff;
    vertical-align: top;
}

.headrow {
    background-color: #97979f;
    color: #ffffff;
    vertical-align: top;
}

.logorow {
    vertical-align: top;
}

.error {
    color: red;
}

.var {
    font-style: italic
}

.halconoperator {
    font-family: monospace, monospace;
}

span.operator {
    font-family: monospace, monospace;
}

span.procedure {
    font-family: monospace, monospace;
}

span.operation {
    font-family: monospace, monospace;
}

span.feature {
    font-family: Arial, Helvetica, Homerton, sans-serif;
}

ul {
    padding-left: 1.2em;
}

li.dot {
    list-style-type: square;
    color: #f28d26;
}

.breadcrumb {
    font-size: 80%;
    color: white;
    background-color: #062d64;
    margin-bottom: 20px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 15px;
}

.webbar {
    font-size: 80%;
    background-color: #dddddd;
    margin-top: 0px;
    margin-left: -35px;
    margin-right: -35px;
    margin-bottom: 0px;
    padding-top: 5px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 5px;
}

.footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    border-top: 1px dashed #f28d26;
    font-size: 80%;
    color: #666666;
    padding-bottom: 8px;
}

.footer .socialmedia a {
    padding-left: 7px;
}

.socialmedia {
    padding-top: 10px;
}

.copyright {
    margin-top: 19px;
}

.breadcrumb a {
    color: #ffffff;
    border-bottom: 1px solid white;
}

.breadcrumb a:link:hover,
.breadcrumb a:visited:hover {
    text-decoration: none;
    border-bottom: none;
}

.heading {
    margin-top: 1ex;
    font-size: 110%;
    font-weight: bold;
    color: #666666;
}

.text {
    color: black;
}

.example {
    font-size: 80%;
    background-color: #f3f3f3;
    border: 1px dashed #666666;
    padding: 10px;
}

.displaymath {
    display: block;
    text-align: center;
    margin-top: 1ex;
    margin-bottom: 1ex;
}

.title {
    float: left;
    padding-top: 3px;
    padding-bottom: 3px;
}

.signnote {
    font-family: Arial, Helvetica, Homerton, sans-serif;
    font-size: 80%;
    color: #666666;
    font-weight: lighter;
    font-style: italic
}

.par {
    margin-bottom: 1.5em;
}

.parhead {
    text-align: right;
}

.parname {
    float: left;
}

.pardesc {
    font-size: 85%;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
    margin-left: 2em;
}

.parcat {
    color: #666;
    font-weight: bold;
}

*[data-if=cpp],
*[data-if=c],
*[data-if=dotnet],
*[data-if=com],
*[data-if=python] {
    display: none;
}

.tabbar {
    text-align: right;
    border-bottom: 1px solid #f28d26;
    margin-bottom: 0.5em;
}

ul.tabs {
    padding-top: 3px;
    padding-bottom: 3px;
    margin-top: 10px;
    margin-bottom: 0;
    font-size: 80%
}

ul.tabs li {
    padding-top: 3px;
    padding-bottom: 3px;
    display: inline;
    overflow: hidden;
    list-style-type: none;
    margin: 0;
    margin-left: 8px;
    border-top: 1px solid #666;
    border-left: 1px solid #666;
    border-right: 1px solid #666;
}

ul.tabs li.active {
    border-left: 1px solid #f28d26;
    border-right: 1px solid #f28d26;
    border-top: 1px solid #f28d26;
    border-bottom: 1px solid #fff;
}

ul.tabs li.inactive {
    background-color: #eee;
}

ul.tabs li a {
    padding-left: 5px;
    padding-right: 5px;
    color: #666;
}

ul.tabs li a:link:hover {
    text-decoration: none;
}

ul.tabs li.inactive a {
    color: #666;
}

ul.tabs li.active a {
    color: black;
}

dl.generic dd {
    margin-bottom: 1em;
}

.pari {
    color: olive;
}

.paro {
    color: maroon;
}

.comment {
    font-size: 80%;
    color: green;
    white-space: nowrap;
}

table.grid {
    border-collapse: collapse;
}

table.grid td {
    padding: 5px;
    border: 1px solid;
}

table.layout {
    border: 0px;
}

table.layout td {
    padding: 5px;
}

table.table {
    border-collapse: collapse;
}

table.table td {
    padding: 5px;
    border-left: 0px;
    border-right: 0px;
}

table.table tr:last-child {
    border-bottom: 1px solid;
}

table.table th {
    padding: 5px;
    border-top: 1px solid;
    border-bottom: 1px solid;
    border-left: 0px;
    border-right: 0px;
}

.details_summary {
    cursor: pointer;
}

table.toctable {
    width: 100%;
}

table.toctable col:first-child {
    width: 20%;
}

table.toctable col:nth-last-child(2) {
    width: 8%;
}

table.altcolored tr:nth-child(even) {
    background-color: #f3f3f3;
}

    </style>
<!--OP_REF_STYLE_END-->
<script>
    <!--
var active_lang='hdevelop';function switchVisibility(obj,active_lang,new_lang)
{var display_style='inline';
for(var i=0;i<obj.length;i++)
{if(obj.item(i).getAttribute('data-if')==new_lang)
{obj.item(i).style.display=display_style;}
if(obj.item(i).getAttribute('data-if')==active_lang)
{obj.item(i).style.display='none';}}
return;}
function toggleLanguage(new_lang,initial)
{if(active_lang!=new_lang)
{var lis=document.getElementsByTagName('li');for(var i=0;i<lis.length;i++)
{if(lis.item(i).id=='syn-'+new_lang)
{lis.item(i).className='active';}
else
{lis.item(i).className='inactive';}}
var divs=document.getElementsByTagName('div');var spans=document.getElementsByTagName('span');switchVisibility(divs,active_lang,new_lang);switchVisibility(spans,active_lang,new_lang);if(!initial)
{setCookie("halcon_reference_language",new_lang,null,null);}
active_lang=new_lang;}
return;}
function setCookie(name,value,domain,exp_offset,path,secure)
{localStorage.setItem(name,value);}
function getCookie(name)
{return localStorage.getItem(name);}
function initialize()
{var qs=location.href.split('?')[1];var qs_lang_raw=location.href.split('interface=')[1];var qs_lang;if(qs_lang_raw)
{qs_lang=qs_lang_raw.split('#')[0];}
var cookie_lang=getCookie("halcon_reference_language");var new_lang;if((qs_lang=="hdevelop")||(qs_lang=="dotnet")||(qs_lang=="python")||(qs_lang=="cpp")||(qs_lang=="c"))
{new_lang=qs_lang;setCookie("halcon_reference_language",new_lang,null,null);}
else if((cookie_lang=="hdevelop")||(cookie_lang=="dotnet")||(cookie_lang=="python")||(cookie_lang=="cpp")||(cookie_lang=="c"))
{new_lang=cookie_lang;}
else
{new_lang="hdevelop";}
toggleLanguage(new_lang,1);return;}
-->

  </script>
</head>
<body onload="initialize();">
<div class="breadcrumb">
<br class="inv"><a href="index.html">目录</a> / <a href="toc_calibration.html">Calibration</a> / <a href="toc_calibration_multiview.html">Multi-View</a><br class="inv">
</div>
<div class="body_main">
<div class="tabbar"><ul class="tabs">
<li id="syn-hdevelop" class="active"><a href="javascript:void(0);" onclick="toggleLanguage('hdevelop')" onfocus="blur()">HDevelop</a></li>
<li id="syn-dotnet" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('dotnet')" onfocus="blur()">.NET</a></li>
<li id="syn-python" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('python')" onfocus="blur()">Python</a></li>
<li id="syn-cpp" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('cpp')" onfocus="blur()">C++</a></li>
<li id="syn-c" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('c')" onfocus="blur()">C</a></li>
</ul></div>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<!--OP_REF_HEADER_END-->
<h1 id="sec_name">
<span data-if="hdevelop" style="display:inline;">create_calib_data</span><span data-if="c" style="display:none;">T_create_calib_data</span><span data-if="cpp" style="display:none;">CreateCalibData</span><span data-if="dotnet" style="display:none;">CreateCalibData</span><span data-if="python" style="display:none;">create_calib_data</span> (算子名称)</h1>
<h2>名称</h2>
<p><code><span data-if="hdevelop" style="display:inline;">create_calib_data</span><span data-if="c" style="display:none;">T_create_calib_data</span><span data-if="cpp" style="display:none;">CreateCalibData</span><span data-if="dotnet" style="display:none;">CreateCalibData</span><span data-if="python" style="display:none;">create_calib_data</span></code> — Create a HALCON calibration data model.</p>
<h2 id="sec_synopsis">参数签名</h2>
<div data-if="hdevelop" style="display:inline;">
<p>
<code><b>create_calib_data</b>( :  : <a href="#CalibSetup"><i>CalibSetup</i></a>, <a href="#NumCameras"><i>NumCameras</i></a>, <a href="#NumCalibObjects"><i>NumCalibObjects</i></a> : <a href="#CalibDataID"><i>CalibDataID</i></a>)</code></p>
</div>
<div data-if="c" style="display:none;">
<p>
<code>Herror <b>T_create_calib_data</b>(const Htuple <a href="#CalibSetup"><i>CalibSetup</i></a>, const Htuple <a href="#NumCameras"><i>NumCameras</i></a>, const Htuple <a href="#NumCalibObjects"><i>NumCalibObjects</i></a>, Htuple* <a href="#CalibDataID"><i>CalibDataID</i></a>)</code></p>
</div>
<div data-if="cpp" style="display:none;">
<p>
<code>void <b>CreateCalibData</b>(const HTuple&amp; <a href="#CalibSetup"><i>CalibSetup</i></a>, const HTuple&amp; <a href="#NumCameras"><i>NumCameras</i></a>, const HTuple&amp; <a href="#NumCalibObjects"><i>NumCalibObjects</i></a>, HTuple* <a href="#CalibDataID"><i>CalibDataID</i></a>)</code></p>
<p>
<code>void <a href="HCalibData.html">HCalibData</a>::<b>HCalibData</b>(const HString&amp; <a href="#CalibSetup"><i>CalibSetup</i></a>, Hlong <a href="#NumCameras"><i>NumCameras</i></a>, Hlong <a href="#NumCalibObjects"><i>NumCalibObjects</i></a>)</code></p>
<p>
<code>void <a href="HCalibData.html">HCalibData</a>::<b>HCalibData</b>(const char* <a href="#CalibSetup"><i>CalibSetup</i></a>, Hlong <a href="#NumCameras"><i>NumCameras</i></a>, Hlong <a href="#NumCalibObjects"><i>NumCalibObjects</i></a>)</code></p>
<p>
<code>void <a href="HCalibData.html">HCalibData</a>::<b>HCalibData</b>(const wchar_t* <a href="#CalibSetup"><i>CalibSetup</i></a>, Hlong <a href="#NumCameras"><i>NumCameras</i></a>, Hlong <a href="#NumCalibObjects"><i>NumCalibObjects</i></a>)  <span class="signnote">
            (
            Windows only)
          </span></code></p>
<p>
<code>void <a href="HCalibData.html">HCalibData</a>::<b>CreateCalibData</b>(const HString&amp; <a href="#CalibSetup"><i>CalibSetup</i></a>, Hlong <a href="#NumCameras"><i>NumCameras</i></a>, Hlong <a href="#NumCalibObjects"><i>NumCalibObjects</i></a>)</code></p>
<p>
<code>void <a href="HCalibData.html">HCalibData</a>::<b>CreateCalibData</b>(const char* <a href="#CalibSetup"><i>CalibSetup</i></a>, Hlong <a href="#NumCameras"><i>NumCameras</i></a>, Hlong <a href="#NumCalibObjects"><i>NumCalibObjects</i></a>)</code></p>
<p>
<code>void <a href="HCalibData.html">HCalibData</a>::<b>CreateCalibData</b>(const wchar_t* <a href="#CalibSetup"><i>CalibSetup</i></a>, Hlong <a href="#NumCameras"><i>NumCameras</i></a>, Hlong <a href="#NumCalibObjects"><i>NumCalibObjects</i></a>)  <span class="signnote">
            (
            Windows only)
          </span></code></p>
</div>
<div data-if="com" style="display:none;"></div>
<div data-if="dotnet" style="display:none;">
<p>
<code>static void <a href="HOperatorSet.html">HOperatorSet</a>.<b>CreateCalibData</b>(<a href="HTuple.html">HTuple</a> <a href="#CalibSetup"><i>calibSetup</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NumCameras"><i>numCameras</i></a>, <a href="HTuple.html">HTuple</a> <a href="#NumCalibObjects"><i>numCalibObjects</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#CalibDataID"><i>calibDataID</i></a>)</code></p>
<p>
<code>public <a href="HCalibData.html">HCalibData</a>(string <a href="#CalibSetup"><i>calibSetup</i></a>, int <a href="#NumCameras"><i>numCameras</i></a>, int <a href="#NumCalibObjects"><i>numCalibObjects</i></a>)</code></p>
<p>
<code>void <a href="HCalibData.html">HCalibData</a>.<b>CreateCalibData</b>(string <a href="#CalibSetup"><i>calibSetup</i></a>, int <a href="#NumCameras"><i>numCameras</i></a>, int <a href="#NumCalibObjects"><i>numCalibObjects</i></a>)</code></p>
</div>
<div data-if="python" style="display:none;">
<p>
<code>def <b>create_calib_data</b>(<a href="#CalibSetup"><i>calib_setup</i></a>: str, <a href="#NumCameras"><i>num_cameras</i></a>: int, <a href="#NumCalibObjects"><i>num_calib_objects</i></a>: int) -&gt; HHandle</code></p>
</div>
<h2 id="sec_description">描述</h2>
<p>该算子 <code><span data-if="hdevelop" style="display:inline">create_calib_data</span><span data-if="c" style="display:none">create_calib_data</span><span data-if="cpp" style="display:none">CreateCalibData</span><span data-if="com" style="display:none">CreateCalibData</span><span data-if="dotnet" style="display:none">CreateCalibData</span><span data-if="python" style="display:none">create_calib_data</span></code> creates a generic calibration
data model that stores
</p>
<ul>
<li>
<p> the description of a camera calibration setup,
</p>
</li>
<li>
<p> settings for the calibration process,
</p>
</li>
<li>
<p> the calibration data, and
</p>
</li>
<li>
<p> the results of the camera calibration or the hand-eye calibration.
</p>
</li>
</ul>
<p>In the parameter <a href="#CalibSetup"><i><code><span data-if="hdevelop" style="display:inline">CalibSetup</span><span data-if="c" style="display:none">CalibSetup</span><span data-if="cpp" style="display:none">CalibSetup</span><span data-if="com" style="display:none">CalibSetup</span><span data-if="dotnet" style="display:none">calibSetup</span><span data-if="python" style="display:none">calib_setup</span></code></i></a>, you specify the calibration setup type.
Currently, five types are supported. A model of the type
<i><span data-if="hdevelop" style="display:inline">'calibration_object'</span><span data-if="c" style="display:none">"calibration_object"</span><span data-if="cpp" style="display:none">"calibration_object"</span><span data-if="com" style="display:none">"calibration_object"</span><span data-if="dotnet" style="display:none">"calibration_object"</span><span data-if="python" style="display:none">"calibration_object"</span></i> is used to calibrate the internal camera
parameters and the camera poses of one or more cameras based on the metric
information extracted from observations of calibration objects.
</p>
<p>A model of type <i><span data-if="hdevelop" style="display:inline">'hand_eye_moving_cam'</span><span data-if="c" style="display:none">"hand_eye_moving_cam"</span><span data-if="cpp" style="display:none">"hand_eye_moving_cam"</span><span data-if="com" style="display:none">"hand_eye_moving_cam"</span><span data-if="dotnet" style="display:none">"hand_eye_moving_cam"</span><span data-if="python" style="display:none">"hand_eye_moving_cam"</span></i>,
<i><span data-if="hdevelop" style="display:inline">'hand_eye_stationary_cam'</span><span data-if="c" style="display:none">"hand_eye_stationary_cam"</span><span data-if="cpp" style="display:none">"hand_eye_stationary_cam"</span><span data-if="com" style="display:none">"hand_eye_stationary_cam"</span><span data-if="dotnet" style="display:none">"hand_eye_stationary_cam"</span><span data-if="python" style="display:none">"hand_eye_stationary_cam"</span></i>, <i><span data-if="hdevelop" style="display:inline">'hand_eye_scara_moving_cam'</span><span data-if="c" style="display:none">"hand_eye_scara_moving_cam"</span><span data-if="cpp" style="display:none">"hand_eye_scara_moving_cam"</span><span data-if="com" style="display:none">"hand_eye_scara_moving_cam"</span><span data-if="dotnet" style="display:none">"hand_eye_scara_moving_cam"</span><span data-if="python" style="display:none">"hand_eye_scara_moving_cam"</span></i>, or
<i><span data-if="hdevelop" style="display:inline">'hand_eye_scara_stationary_cam'</span><span data-if="c" style="display:none">"hand_eye_scara_stationary_cam"</span><span data-if="cpp" style="display:none">"hand_eye_scara_stationary_cam"</span><span data-if="com" style="display:none">"hand_eye_scara_stationary_cam"</span><span data-if="dotnet" style="display:none">"hand_eye_scara_stationary_cam"</span><span data-if="python" style="display:none">"hand_eye_scara_stationary_cam"</span></i> is used to perform a hand-eye
calibration based on observations of a calibration object and
corresponding poses of a robot tool in the robot base coordinate system.
The latter four model types on the one hand distinguish whether the camera
or the calibration object is moved by the robot and on the other hand
distinguish whether an articulated robot or a SCARA robot is calibrated.
The arm of an articulated robot has three rotary
joints typically covering 6 degrees of freedom (3 translations and 3
rotations). SCARA robots have two parallel rotary joints and one parallel
prismatic joint covering only 4 degrees of freedom (3 translations and 1
rotation). Loosely speaking, an articulated robot is able to tilt its
end effector while a SCARA robot is not.
</p>
<p><a href="#NumCameras"><i><code><span data-if="hdevelop" style="display:inline">NumCameras</span><span data-if="c" style="display:none">NumCameras</span><span data-if="cpp" style="display:none">NumCameras</span><span data-if="com" style="display:none">NumCameras</span><span data-if="dotnet" style="display:none">numCameras</span><span data-if="python" style="display:none">num_cameras</span></code></i></a> specifies the number of cameras that are
calibrated simultaneously in the setup. <a href="#NumCalibObjects"><i><code><span data-if="hdevelop" style="display:inline">NumCalibObjects</span><span data-if="c" style="display:none">NumCalibObjects</span><span data-if="cpp" style="display:none">NumCalibObjects</span><span data-if="com" style="display:none">NumCalibObjects</span><span data-if="dotnet" style="display:none">numCalibObjects</span><span data-if="python" style="display:none">num_calib_objects</span></code></i></a>
specifies the number of calibration objects observed by the cameras.
Please note that for camera calibrations with line scan cameras with
perspective lenses only a single calibration object is allowed
(<a href="#NumCalibObjects"><i><code><span data-if="hdevelop" style="display:inline">NumCalibObjects</span><span data-if="c" style="display:none">NumCalibObjects</span><span data-if="cpp" style="display:none">NumCalibObjects</span><span data-if="com" style="display:none">NumCalibObjects</span><span data-if="dotnet" style="display:none">numCalibObjects</span><span data-if="python" style="display:none">num_calib_objects</span></code></i></a>=1).  For hand-eye calibrations, only two
setups are currently supported: either one area scan projective
camera and one calibration object (<a href="#NumCameras"><i><code><span data-if="hdevelop" style="display:inline">NumCameras</span><span data-if="c" style="display:none">NumCameras</span><span data-if="cpp" style="display:none">NumCameras</span><span data-if="com" style="display:none">NumCameras</span><span data-if="dotnet" style="display:none">numCameras</span><span data-if="python" style="display:none">num_cameras</span></code></i></a>=1,
<a href="#NumCalibObjects"><i><code><span data-if="hdevelop" style="display:inline">NumCalibObjects</span><span data-if="c" style="display:none">NumCalibObjects</span><span data-if="cpp" style="display:none">NumCalibObjects</span><span data-if="com" style="display:none">NumCalibObjects</span><span data-if="dotnet" style="display:none">numCalibObjects</span><span data-if="python" style="display:none">num_calib_objects</span></code></i></a>=1) or a general sensor with no calibration
object (<a href="#NumCameras"><i><code><span data-if="hdevelop" style="display:inline">NumCameras</span><span data-if="c" style="display:none">NumCameras</span><span data-if="cpp" style="display:none">NumCameras</span><span data-if="com" style="display:none">NumCameras</span><span data-if="dotnet" style="display:none">numCameras</span><span data-if="python" style="display:none">num_cameras</span></code></i></a>=0, <a href="#NumCalibObjects"><i><code><span data-if="hdevelop" style="display:inline">NumCalibObjects</span><span data-if="c" style="display:none">NumCalibObjects</span><span data-if="cpp" style="display:none">NumCalibObjects</span><span data-if="com" style="display:none">NumCalibObjects</span><span data-if="dotnet" style="display:none">numCalibObjects</span><span data-if="python" style="display:none">num_calib_objects</span></code></i></a>=0).
<span class="pardesc"><span class="parcat">Attention:
      </span></span> The four hand-eye calibration models do not support
telecentric cameras.
</p>
<p><a href="#CalibDataID"><i><code><span data-if="hdevelop" style="display:inline">CalibDataID</span><span data-if="c" style="display:none">CalibDataID</span><span data-if="cpp" style="display:none">CalibDataID</span><span data-if="com" style="display:none">CalibDataID</span><span data-if="dotnet" style="display:none">calibDataID</span><span data-if="python" style="display:none">calib_data_id</span></code></i></a> returns a handle of the new calibration data
model. You pass this handle to other operators to collect
the description of the camera setup, the calibration settings, and the
calibration data. For camera calibrations, you pass it to
<a href="calibrate_cameras.html"><code><span data-if="hdevelop" style="display:inline">calibrate_cameras</span><span data-if="c" style="display:none">calibrate_cameras</span><span data-if="cpp" style="display:none">CalibrateCameras</span><span data-if="com" style="display:none">CalibrateCameras</span><span data-if="dotnet" style="display:none">CalibrateCameras</span><span data-if="python" style="display:none">calibrate_cameras</span></code></a>, which performs the actual camera calibration
and stores the calibration results in the calibration data model.
For a detailed description of the preparation process, please refer to
the chapter <a href="toc_calibration.html">Calibration</a>.
For hand-eye calibrations, you pass it to <a href="calibrate_hand_eye.html"><code><span data-if="hdevelop" style="display:inline">calibrate_hand_eye</span><span data-if="c" style="display:none">calibrate_hand_eye</span><span data-if="cpp" style="display:none">CalibrateHandEye</span><span data-if="com" style="display:none">CalibrateHandEye</span><span data-if="dotnet" style="display:none">CalibrateHandEye</span><span data-if="python" style="display:none">calibrate_hand_eye</span></code></a>, which
performs the actual hand-eye calibration and stores the calibration results
in the calibration data model. For a detailed description of the
preparation process, please refer to 该算子 <a href="calibrate_hand_eye.html"><code><span data-if="hdevelop" style="display:inline">calibrate_hand_eye</span><span data-if="c" style="display:none">calibrate_hand_eye</span><span data-if="cpp" style="display:none">CalibrateHandEye</span><span data-if="com" style="display:none">CalibrateHandEye</span><span data-if="dotnet" style="display:none">CalibrateHandEye</span><span data-if="python" style="display:none">calibrate_hand_eye</span></code></a>.
</p>
<h2 id="sec_execution">运行信息</h2>
<ul>
  <li>多线程类型:可重入(与非独占操作符并行运行)。</li>
<li>多线程作用域:全局(可以从任何线程调用)。</li>
  <li>未经并行化处理。</li>
</ul>
<p>This operator returns a handle. Note that the state of an instance of this handle type may be changed by specific operators even though the handle is used as an input parameter by those operators.</p>
<h2 id="sec_parameters">参数表</h2>
  <div class="par">
<div class="parhead">
<span id="CalibSetup" class="parname"><b><code><span data-if="hdevelop" style="display:inline">CalibSetup</span><span data-if="c" style="display:none">CalibSetup</span><span data-if="cpp" style="display:none">CalibSetup</span><span data-if="com" style="display:none">CalibSetup</span><span data-if="dotnet" style="display:none">calibSetup</span><span data-if="python" style="display:none">calib_setup</span></code></b> (input_control)  </span><span>string <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">str</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string)</span><span data-if="dotnet" style="display:none"> (<i>string</i>)</span><span data-if="cpp" style="display:none"> (<i>HString</i>)</span><span data-if="c" style="display:none"> (<i>char*</i>)</span></span>
</div>
<p class="pardesc">Type of the calibration setup.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>
    <span data-if="hdevelop" style="display:inline">'calibration_object'</span>
    <span data-if="c" style="display:none">"calibration_object"</span>
    <span data-if="cpp" style="display:none">"calibration_object"</span>
    <span data-if="com" style="display:none">"calibration_object"</span>
    <span data-if="dotnet" style="display:none">"calibration_object"</span>
    <span data-if="python" style="display:none">"calibration_object"</span>
</p>
<p class="pardesc"><span class="parcat">List of values:
      </span><span data-if="hdevelop" style="display:inline">'calibration_object'</span><span data-if="c" style="display:none">"calibration_object"</span><span data-if="cpp" style="display:none">"calibration_object"</span><span data-if="com" style="display:none">"calibration_object"</span><span data-if="dotnet" style="display:none">"calibration_object"</span><span data-if="python" style="display:none">"calibration_object"</span>, <span data-if="hdevelop" style="display:inline">'hand_eye_moving_cam'</span><span data-if="c" style="display:none">"hand_eye_moving_cam"</span><span data-if="cpp" style="display:none">"hand_eye_moving_cam"</span><span data-if="com" style="display:none">"hand_eye_moving_cam"</span><span data-if="dotnet" style="display:none">"hand_eye_moving_cam"</span><span data-if="python" style="display:none">"hand_eye_moving_cam"</span>, <span data-if="hdevelop" style="display:inline">'hand_eye_scara_moving_cam'</span><span data-if="c" style="display:none">"hand_eye_scara_moving_cam"</span><span data-if="cpp" style="display:none">"hand_eye_scara_moving_cam"</span><span data-if="com" style="display:none">"hand_eye_scara_moving_cam"</span><span data-if="dotnet" style="display:none">"hand_eye_scara_moving_cam"</span><span data-if="python" style="display:none">"hand_eye_scara_moving_cam"</span>, <span data-if="hdevelop" style="display:inline">'hand_eye_scara_stationary_cam'</span><span data-if="c" style="display:none">"hand_eye_scara_stationary_cam"</span><span data-if="cpp" style="display:none">"hand_eye_scara_stationary_cam"</span><span data-if="com" style="display:none">"hand_eye_scara_stationary_cam"</span><span data-if="dotnet" style="display:none">"hand_eye_scara_stationary_cam"</span><span data-if="python" style="display:none">"hand_eye_scara_stationary_cam"</span>, <span data-if="hdevelop" style="display:inline">'hand_eye_stationary_cam'</span><span data-if="c" style="display:none">"hand_eye_stationary_cam"</span><span data-if="cpp" style="display:none">"hand_eye_stationary_cam"</span><span data-if="com" style="display:none">"hand_eye_stationary_cam"</span><span data-if="dotnet" style="display:none">"hand_eye_stationary_cam"</span><span data-if="python" style="display:none">"hand_eye_stationary_cam"</span></p>
</div>
  <div class="par">
<div class="parhead">
<span id="NumCameras" class="parname"><b><code><span data-if="hdevelop" style="display:inline">NumCameras</span><span data-if="c" style="display:none">NumCameras</span><span data-if="cpp" style="display:none">NumCameras</span><span data-if="com" style="display:none">NumCameras</span><span data-if="dotnet" style="display:none">numCameras</span><span data-if="python" style="display:none">num_cameras</span></code></b> (input_control)  </span><span>number <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">int</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (integer)</span><span data-if="dotnet" style="display:none"> (<i>int</i> / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>Hlong</i>)</span><span data-if="c" style="display:none"> (<i>Hlong</i>)</span></span>
</div>
<p class="pardesc">Number of cameras in the calibration setup.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>1</p>
<p class="pardesc"><span class="parcat">Restriction:
      </span><code>NumCameras &gt;= 0</code></p>
</div>
  <div class="par">
<div class="parhead">
<span id="NumCalibObjects" class="parname"><b><code><span data-if="hdevelop" style="display:inline">NumCalibObjects</span><span data-if="c" style="display:none">NumCalibObjects</span><span data-if="cpp" style="display:none">NumCalibObjects</span><span data-if="com" style="display:none">NumCalibObjects</span><span data-if="dotnet" style="display:none">numCalibObjects</span><span data-if="python" style="display:none">num_calib_objects</span></code></b> (input_control)  </span><span>number <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">int</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (integer)</span><span data-if="dotnet" style="display:none"> (<i>int</i> / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>Hlong</i>)</span><span data-if="c" style="display:none"> (<i>Hlong</i>)</span></span>
</div>
<p class="pardesc">Number of calibration objects.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>1</p>
<p class="pardesc"><span class="parcat">Restriction:
      </span><code>NumCalibObjects &gt;= 0</code></p>
</div>
  <div class="par">
<div class="parhead">
<span id="CalibDataID" class="parname"><b><code><span data-if="hdevelop" style="display:inline">CalibDataID</span><span data-if="c" style="display:none">CalibDataID</span><span data-if="cpp" style="display:none">CalibDataID</span><span data-if="com" style="display:none">CalibDataID</span><span data-if="dotnet" style="display:none">calibDataID</span><span data-if="python" style="display:none">calib_data_id</span></code></b> (output_control)  </span><span>calib_data <code>→</code> <span data-if="dotnet" style="display:none"><a href="HCalibData.html">HCalibData</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">HHandle</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (handle)</span><span data-if="dotnet" style="display:none"> (<i>IntPtr</i>)</span><span data-if="cpp" style="display:none"> (<i>HHandle</i>)</span><span data-if="c" style="display:none"> (<i>handle</i>)</span></span>
</div>
<p class="pardesc">Handle of the created calibration data model.</p>
</div>
<h2 id="sec_successors">可能的后置算子</h2>
<p>
<code><a href="set_calib_data_cam_param.html"><span data-if="hdevelop" style="display:inline">set_calib_data_cam_param</span><span data-if="c" style="display:none">set_calib_data_cam_param</span><span data-if="cpp" style="display:none">SetCalibDataCamParam</span><span data-if="com" style="display:none">SetCalibDataCamParam</span><span data-if="dotnet" style="display:none">SetCalibDataCamParam</span><span data-if="python" style="display:none">set_calib_data_cam_param</span></a></code>, 
<code><a href="set_calib_data_calib_object.html"><span data-if="hdevelop" style="display:inline">set_calib_data_calib_object</span><span data-if="c" style="display:none">set_calib_data_calib_object</span><span data-if="cpp" style="display:none">SetCalibDataCalibObject</span><span data-if="com" style="display:none">SetCalibDataCalibObject</span><span data-if="dotnet" style="display:none">SetCalibDataCalibObject</span><span data-if="python" style="display:none">set_calib_data_calib_object</span></a></code>
</p>
<h2 id="sec_module">模块</h2>
<p>
Calibration</p>
<!--OP_REF_FOOTER_START-->
<hr>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<div class="footer">
<div class="copyright">HALCON算子参考手册 Copyright © 2015-2023 51Halcon</div>
</div>
</div>
</body>
</html>
